#ifndef CIOPS_OPERATIONPARAM_H
#define CIOPS_OPERATIONPARAM_H

#include <string>

namespace CIOps {
    /**
     * This class represents a single parameter for an operation     
     **/
    class OperationParam {               
        //Friend classes
        friend class Operation;

    public:     
        OperationParam();               //Constructor
        virtual ~OperationParam();      //Destructor

        typedef enum { INT, FLOAT, STRING } ParamType;          //The possible parameter types  

    protected:
        std::string name;               //The parameter name
        ParamType type;                 //The parameter type
        std::string value;              //The parameter value
        std::string example;            //The parameter value example
        bool required;                  //A boolean to indicate if this parameter is required for the operation

    public:     
        //Utility Methods
        //bool isValid();               //TODO

    };

}

#endif /* CIOPS_OPERATIONPARAM_H */
